# ES7 特性
ES7 只有两个特性
- includes()
- 指数操作符
# 验证数组中是否存在某个元素
# 不使用ES7语法
使用indexOf()
验证数组中是否存在某个元素,这时需要根据返回值是否为-1来判断:
let arr = ['react', 'angular', 'vue'];
if (arr.indexOf('react') !== -1) {
console.log('react存在');
}
1
2
3
4
2
3
4
# 使用ES7语法
使用includes()
验证数组中是否存在某个元素,这样更加直观简单:
let arr = ['react', 'angular', 'vue'];
if (arr.includes('react')) {
console.log('react存在');
}
1
2
3
4
2
3
4
# indexOf 和 includes的比较
- includes()能否发现NaN,而indexof()不能
[NaN].includes(NaN) // true
[NaN].indexOf(NaN) // -1
1
2
2
- 只能判断简单类型的数据,对于复杂类型的数据,比如对象类型的数组,二维数组,这些,是无法判断的.
var arr = [1, [2, 3], 4]
arr.includes([2, 3]) //false
arr.indexOf([2, 3]) //-1
1
2
3
2
3
总结
由于它对NaN的处理方式与indexOf不同,假如你只想知道某个值是否在数组中而并不关心它的索引位置,建议使用includes()。如果你想获取一个值在数组中的位置,那么你只能使用indexOf方法
# 指数操作符(取幂运算符)
# 不使用ES7语法
使用自定义的递归函数calculateExponent
或者Math.pow()
进行指数运算:
function calculateExponent(base, exponent) {
if (exponent === 1) {
return base;
} else {
return base * calculateExponent(base, exponent - 1);
}
}
console.log(calculateExponent(7, 3)); // 输出343
console.log(Math.pow(7, 3)); // 输出343
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 使用ES7语法
使用指数运算符,就像+、-等操作符一样:
console.log(7**3);
1